home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / basic / clockita / orologio.text < prev    next >
Text File  |  2000-02-28  |  10KB  |  402 lines

  1. ;-> Orologio by Stefano Regattin
  2. ;d> 9 ottobre 1998 da Clock
  3. ;m> 10,11,16,17,19,24,29 ottobre 1998
  4. ;m> 4,6 novembre 1998
  5. ;m> 13,14,23 dicembre 1998
  6. ;m> 3 gennaio 1999
  7. ;m> 9,12 marzo 1999
  8. ;m> 25,26 settembre 1999
  9. ;m> 1,2,3,5,6,7,8,9,10,11 febbraio 2000
  10. ;---------------------------------------
  11. #HaiCambiatoLeDimensioniDellaFinestra=2
  12. #HaiPremutoUnTastoDelTopo=8
  13. #HaiRilasciatoUnGadget=$40
  14. #HaiChiusoLaFinestra=$200
  15.  
  16. DEFTYPE .l RastPortFinestra
  17.  
  18. DEFTYPE .b AltezzaFontRegistrata,NumeroToolType,ToolTypeScritti
  19.  
  20. DEFTYPE .w
  21.  
  22. AltezzaFont.b=13
  23.  
  24. Statement ApriFinestraZero{}
  25. SHARED LunXFinestraZero
  26. SHARED LunYFinestraZero
  27. SHARED PosXFinestraZero
  28. SHARED PosYFinestraZero
  29. SHARED RastPortFinestra
  30.  Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$140F,"",1,2
  31.  WTitle "Orologio","by Stefano Regattin e-mail>StefanoRegattin@lycosmail.com"
  32.  RastPortFinestra=RastPort(0)
  33.  WindowFont 0
  34. End Statement
  35.  
  36. Statement LeggiToolType{}
  37. SHARED FontOrologio$
  38. SHARED FontOrologioRegistrato$
  39. SHARED IconaOrologio$
  40. SHARED AltezzaFont
  41. SHARED AltezzaFontRegistrata
  42. SHARED PosXFinestraZero
  43. SHARED PosXFinestraZeroRegistrata
  44. SHARED PosYFinestraZero
  45. SHARED PosYFinestraZeroRegistrata
  46.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  47.  If ToolTypeLetti>0
  48.   NuovoFontOrologio$=FindToolValue("FONTNAME")
  49.   NuovaAltezzaFont$=FindToolValue("FONTSIZE")
  50.   NuovaPosXFinestraZero$=FindToolValue("WINDOWX")
  51.   NuovaPosYFinestraZero$=FindToolValue("WINDOWY")
  52.   If NuovoFontOrologio$<>""
  53.    FontOrologioRegistrato$=NuovoFontOrologio$
  54.    FontOrologio$=NuovoFontOrologio$
  55.   EndIf
  56.   If NuovaAltezzaFont$<>""
  57.    AltezzaFontRegistrata=Val(NuovaAltezzaFont$)
  58.    AltezzaFont=Val(NuovaAltezzaFont$)
  59.   EndIf
  60.   If NuovaPosXFinestraZero$<>""
  61.    PosXFinestraZeroRegistrata=Val(NuovaPosXFinestraZero$)
  62.    PosXFinestraZero=Val(NuovaPosXFinestraZero$)
  63.   EndIf
  64.   If NuovaPosYFinestraZero$<>""
  65.    PosYFinestraZeroRegistrata=Val(NuovaPosYFinestraZero$)
  66.    PosYFinestraZero=Val(NuovaPosYFinestraZero$)
  67.   EndIf
  68.   FreeIconObject
  69.  EndIf
  70. End Statement
  71.  
  72. Statement ScriviToolType{}
  73. SHARED FontOrologio$
  74. SHARED FontOrologioRegistrato$
  75. SHARED IconaOrologio$
  76. SHARED AltezzaFont
  77. SHARED AltezzaFontRegistrata
  78. SHARED PosXFinestraZero
  79. SHARED PosXFinestraZeroRegistrata
  80. SHARED PosYFinestraZero
  81. SHARED PosYFinestraZeroRegistrata
  82. SHARED ToolTypeScritti
  83.  ToolTypeLetti.l=GetIconObject(IconaOrologio$)
  84.  If ToolTypeLetti>0
  85.   If FindToolType("FONTNAME")=True
  86.    SetToolValue "FONTNAME",FontOrologio$
  87.   Else
  88.    NewToolType "FONTNAME",FontOrologio$
  89.   EndIf
  90.   If FindToolType("FONTSIZE")=True
  91.    SetToolValue "FONTSIZE",Str$(AltezzaFont)
  92.   Else
  93.    NewToolType "FONTSIZE",Str$(AltezzaFont)
  94.   EndIf
  95.   If FindToolType("WINDOWX")=True
  96.    SetToolValue "WINDOWX",Str$(PosXFinestraZero)
  97.   Else
  98.    NewToolType "WINDOWX",Str$(PosXFinestraZero)
  99.   EndIf
  100.   If FindToolType("WINDOWY")=True
  101.    SetToolValue "WINDOWY",Str$(PosYFinestraZero)
  102.   Else
  103.    NewToolType "WINDOWY",Str$(PosYFinestraZero)
  104.   EndIf
  105.   ToolTypeScritti=PutIconObject(IconaOrologio$)
  106.   If ToolTypeScritti=True
  107.    FontOrologioRegistrato$=FontOrologio$
  108.    AltezzaFontRegistrata=AltezzaFont
  109.    PosXFinestraZeroRegistrata=PosXFinestraZero
  110.    PosYFinestraZeroRegistrata=PosYFinestraZero
  111.   EndIf
  112.   FreeIconObject
  113.  EndIf
  114. End Statement
  115.  
  116. Statement CercaFont{}
  117. SHARED FontOrologio$
  118. SHARED AltezzaFont
  119.  NEWTYPE .FontInfo
  120.   Nome$
  121.   Altezza.w
  122.   Stile.b
  123.   Segnalatori
  124.   PennaUno
  125.   PennaDue
  126.   ModoDisegno
  127.   Pad
  128.  End NEWTYPE
  129.  
  130.  *Font.FontInfo=ASLFontRequest(0)
  131.  
  132.  If *Font<>0
  133.   FontOrologio$=*Font\Nome
  134.   AltezzaFont=*Font\Altezza
  135.  EndIf
  136. End Statement
  137.  
  138. Statement Impostazioni{}
  139. SHARED OraAllarme$
  140. SHARED OraDiOggi$
  141. SHARED FontOrologio$
  142. SHARED FontOrologioRegistrato$
  143. SHARED AltezzaFont
  144. SHARED AltezzaFontRegistrata
  145. SHARED LunXSchermo
  146. SHARED PosXFinestraZero
  147. SHARED PosXFinestraZeroRegistrata
  148. SHARED PosYFinestraZero
  149. SHARED PosYFinestraZeroRegistrata
  150. SHARED StatoAllarme
  151. SHARED ToolTypeScritti
  152.  StringGadget 0,1,1,0,0,6,6*8
  153.  StringGadget 0,1,14,0,1,25,106
  154.  StringGadget 0,75,1,0,2,4,4*8
  155.  TextGadget 0,58,1,1,3,"A"
  156.  StringGadget 0,9,27,0,4,5,5*8
  157.  StringGadget 0,67,27,0,5,5,5*8
  158.  TextGadget 0,3,40,1,6,"*** Salva ***"
  159.  PosXFinestraZero=WindowX-WLeftOff
  160.  PosYFinestraZero=WindowY-WTopOff
  161.  PosXFinestraUno=WindowX
  162.  PosYFinestraUno=WindowY
  163.  LunXFinestraUno=124
  164.  LunYFinestraUno=74
  165.  If PosXFinestraUno+124>LunXSchermo Then PosXFinestraUno=LunXSchermo-124
  166.  If PosYFinestraUno+74>WBHeight Then PosYFinestraUno=WBHeight-74
  167.  Window 1,PosXFinestraUno,PosYFinestraUno,LunXFinestraUno,LunYFinestraUno,$140A,"",1,2,0
  168.  WTitle "Impostazioni","Imposta le variabili dell'orologio"
  169.  WindowFont 1
  170.  WLocate 0,29:Print "X"
  171.  WLocate 58,29:Print"Y"
  172.  If OraAllarme$="" Then OraAllarme$=UnLeft$(OraDiOggi$,3)
  173.  Repeat
  174.   SetString 0,0,OraAllarme$
  175.   Redraw 1,0
  176.   SetString 0,1,FontOrologio$
  177.   Redraw 1,1
  178.   SetString 0,2,Str$(AltezzaFont)
  179.   Redraw 1,2
  180.   SetString 0,4,Str$(PosXFinestraZero)
  181.   Redraw 1,4
  182.   SetString 0,5,Str$(PosYFinestraZero)
  183.   Redraw 1,5
  184.   ValoriCambiati.b=False
  185.   If FontOrologio$<>FontOrologioRegistrato$ Then ValoriCambiati=True
  186.   If AltezzaFont<>AltezzaFontRegistrata Then ValoriCambiati=True
  187.   If PosXFinestraZero<>PosXFinestraZeroRegistrata Then ValoriCambiati=True
  188.   If PosYFinestraZero<>PosYFinestraZeroRegistrata Then ValoriCambiati=True
  189.   If ValoriCambiati=True Then Enable 0,6 Else Toggle 0,6,Off:Disable 0,6
  190.   Redraw 1,6
  191.   EventoFinestra.l=WaitEvent
  192.   If EventoFinestra=#HaiRilasciatoUnGadget
  193.    If GadgetHit<>3 AND GadgetHit<>6 Then ActivateString 1,GadgetHit
  194.    Select GadgetHit
  195.    Case 0
  196.     OraAllarme$=StringText$(0,0)
  197.    Case 1
  198.     NuovoFontOrologio$=StringText$(0,1)
  199.     If NuovoFontOrologio$="" Then CercaFont{}
  200.     If Right$(NuovoFontOrologio$,5)<>".font" Then NuovoFontOrologio$+".font"
  201.     If Len(NuovoFontOrologio$)>0
  202.      If Exists("FONTS:"+NuovoFontOrologio$)
  203.       FontOrologio$=NuovoFontOrologio$
  204.      EndIf
  205.     EndIf
  206.    Case 2
  207.     AltezzaFont=Val(StringText$(0,2))
  208.     AltezzaFont=Max(AltezzaFont,6)
  209.    Case 3
  210.     StatoAllarme=GadgetStatus(0,3)
  211.    Case 4
  212.     PosXFinestraZero=Val(StringText$(0,4))
  213.    Case 5
  214.     PosYFinestraZero=Val(StringText$(0,5))
  215.    Case 6
  216.     ScriviToolType{}
  217.     If ToolTypeScritti=True
  218.      Toggle 0,6,Off
  219.      Disable 0,6
  220.      Redraw 1,6
  221.     Else
  222.      Toggle 0,6,On
  223.     EndIf
  224.    End Select
  225.   EndIf
  226.  Until EventoFinestra=#HaiChiusoLaFinestra
  227.  CloseWindow 1
  228.  Use Window 0
  229.  WindowFont 0
  230. End Statement
  231.  
  232. Statement DataDiOggi{}
  233. SHARED Allarme$
  234. SHARED DataDiOggi$
  235. SHARED LunghezzaDataDiOggi
  236. SHARED LunghezzaScrittaAllarme
  237. SHARED RastPortFinestra
  238.  Select WeekDay
  239.  Case 0
  240.   GiornoDellaSettimana$="Dom"
  241.  Case 1
  242.   GiornoDellaSettimana$="Lun"
  243.  Case 2
  244.   GiornoDellaSettimana$="Mar"
  245.  Case 3
  246.   GiornoDellaSettimana$="Mer"
  247.  Case 4
  248.   GiornoDellaSettimana$="Gio"
  249.  Case 5
  250.   GiornoDellaSettimana$="Ven"
  251.  Case 6
  252.   GiornoDellaSettimana$="Sab"
  253.  End Select
  254.  Giorno$=Str$(Days)
  255.  Select Months
  256.  Case 1
  257.   Mese$="gennaio"
  258.  Case 2
  259.   Mese$="febbraio"
  260.  Case 3
  261.   Mese$="marzo"
  262.  Case 4
  263.   Mese$="aprile"
  264.  Case 5
  265.   Mese$="maggio"
  266.  Case 6
  267.   Mese$="giugno"
  268.  Case 7
  269.   Mese$="luglio"
  270.  Case 8
  271.   Mese$="agosto"
  272.  Case 9
  273.   Mese$="settembre"
  274.  Case 10
  275.   Mese$="ottobre"
  276.  Case 11
  277.   Mese$="novembre"
  278.  Case 12
  279.   Mese$="dicembre"
  280.  End Select
  281.  Anno$=Str$(Years)
  282.  DataDiOggi$=" "+GiornoDellaSettimana$+", "+Giorno$+" "+Mese$+" "+Anno$+" "
  283.  LunghezzaDataDiOggi.w=TextLength_(RastPortFinestra,&DataDiOggi$,Len(DataDiOggi$))
  284. End Statement
  285.  
  286. WBStartup
  287.  
  288. AltezzaFontSchermo.b=8
  289. OpenFontPrefs
  290.  AltezzaFontSchermo.b=DefaultFontHeight(2)
  291. CloseFontPrefs
  292.  
  293. WbToScreen 0
  294.  
  295. IndirizzoSchermo.l=Peek.l(Addr Screen(0))
  296. LunXSchermo=Peek.w(IndirizzoSchermo+12)
  297.  
  298. FontOrologio$="Data70.font"
  299.  
  300. PosXFinestraZero=0
  301. PosYFinestraZero=AltezzaFontSchermo+3
  302.  
  303. IconaOrologio$=ProgPath$+".info"
  304.  
  305. LeggiToolType{}
  306.  
  307. LoadFont 0,FontOrologio$,AltezzaFont
  308.  
  309. LoadFont 1,"topaz.font",8
  310.  
  311. LunXFinestraZero=70
  312. LunYFinestraZero=30
  313.  
  314. Window 0,PosXFinestraZero,PosYFinestraZero,LunXFinestraZero,LunYFinestraZero,$140F,"",1,2
  315. RastPortFinestra=RastPort(0)
  316. WindowFont 0
  317.  
  318. DataDiOggi$=Date$(SystemDate)
  319.  
  320. DataDiOggi{}
  321.  
  322. LunXFinestraZero=22+LunghezzaDataDiOggi
  323. LunYFinestraZero=WTopOff+AltezzaFont*2+6
  324.  
  325. ApriFinestraZero{}
  326.  
  327. RaggioCerchio=AltezzaFont/2
  328.  
  329. Repeat
  330.  EventoFinestra.l=Event
  331.  If EventoFinestra=#HaiCambiatoLeDimensioniDellaFinestra
  332.   AltezzaFont=InnerHeight/2
  333.   RaggioMassimoCerchio=AltezzaFont/2
  334.   LoadFont 0,FontOrologio$,AltezzaFont
  335.   WindowFont 0
  336.   WCls
  337.  EndIf
  338.  If EventoFinestra=#HaiPremutoUnTastoDelTopo
  339.   PrecedenteFontOrologio$=FontOrologio$
  340.   PrecedenteAltezzaFont.b=AltezzaFont
  341.   Impostazioni{}
  342.   Use Window 0
  343.   FinestraZeroAggiornata.b=False
  344.   If FontOrologio$<>PrecedenteFontOrologio$ OR AltezzaFont<>PrecedenteAltezzaFont
  345.    LoadFont 0,FontOrologio$,AltezzaFont
  346.    WindowFont 0
  347.    DataDiOggi{}
  348.    LunXFinestraZero=WLeftOff+LunghezzaDataDiOggi+18
  349.    LunYFinestraZero=WTopOff+AltezzaFont*2+6
  350.    If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo
  351.     PosXFinestraZero=LunXSchermo-LunXFinestraZero
  352.    EndIf
  353.    If PosYFinestraZero+LunYFinestraZero-1>WBHeight
  354.     PosYFinestraZero=WBHeight-LunYFinestraZero
  355.    EndIf
  356.    CloseWindow 0
  357.    ApriFinestraZero{}
  358.    FinestraZeroAggiornata=True
  359.   EndIf
  360.   If FinestraZeroAggiornata=False
  361.    If PosXFinestraZero<>WindowX-WLeftOff OR PosYFinestraZero<>WindowY-WTopOff
  362.     If PosXFinestraZero+LunXFinestraZero-1>LunXSchermo
  363.      PosXFinestraZero=LunXSchermo-LunXFinestraZero
  364.     EndIf
  365.     If PosYFinestraZero+LunYFinestraZero-1>WBHeight
  366.      PosYFinestraZero=WBHeight-LunYFinestraZero
  367.     EndIf
  368.     CloseWindow 0
  369.     ApriFinestraZero{}
  370.    EndIf
  371.   EndIf
  372.   RaggioMassimoCerchio=AltezzaFont/2
  373.   RaggioCerchio=RaggioMassimoCerchio
  374.  EndIf
  375.  DataDiOggi$=Date$(SystemDate)
  376.  DataDiOggi{}
  377.  XData.w=(InnerWidth-LunghezzaDataDiOggi)/2
  378.  WLocate XData,0:Print DataDiOggi$
  379.  OraDiOggi$=Str$(Hours/10)
  380.  OraDiOggi$+Str$(Hours MOD 10)+":"
  381.  OraDiOggi$+Str$(Mins/10)
  382.  OraDiOggi$+Str$(Mins MOD 10)+":"
  383.  OraDiOggi$+Str$(Secs/10)
  384.  OraDiOggi$+Str$(Secs MOD 10)
  385.  LunghezzaOraDiOggi.w=TextLength_(RastPortFinestra,&OraDiOggi$,Len(OraDiOggi$))
  386.  XOra.w=(InnerWidth-LunghezzaOraDiOggi)/2-1
  387.  WLocate XOra,AltezzaFont:Print " ",OraDiOggi$," "
  388.  If StatoAllarme=True
  389.   If Left$(OraDiOggi$,5)=OraAllarme$ Then BeepScreen 0
  390.   XAllarme=InnerWidth-1-AltezzaFont/2
  391.   YAllarme=InnerHeight-1-AltezzaFont/2
  392.   WCircle XAllarme,YAllarme,RaggioCerchio,1
  393.  EndIf
  394.  Delay_ 50
  395.  If StatoAllarme=True
  396.   WCircle XAllarme,YAllarme,RaggioCerchio,0
  397.   RaggioCerchio+1
  398.   If RaggioCerchio>RaggioMassimoCerchio Then RaggioCerchio=1
  399.  EndIf
  400. Until EventoFinestra=#HaiChiusoLaFinestra
  401. End
  402.